
package business;

import dao.CategoriaDAO;
import dao.ReservaDAO;
import gui.Reserva_Criar;
import java.sql.Date;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import vo.ReservaVO;

public class Reserva {

    public static void DeleteReservaPeloID(String apagar) {
        ReservaDAO.deleteReservaPeloID(apagar);
    }
    String Id;
    String nomeCategoria;
    String dataRetirada;
    String dataDevolucao;
    String orcamento;
    String CPFCliente;
    String CPFFuncionario;

    public Reserva(String nome,String dataR,String dataD,String orc,String CPFC,String CPFF) {
        this.CPFCliente=CPFC;
        this.nomeCategoria=nome;
        this.dataRetirada=dataR;
        this.dataDevolucao=dataD;
        this.orcamento=orc;
        this.CPFFuncionario=CPFF;
    }
    
    
    public static List<ReservaVO> getReservas() {
        return ReservaDAO.getReservas();
    }
     public static List<ReservaVO> getReservaPeloID(String ID) {
        return ReservaDAO.getReservaPeloID(ID);
    }
     
    public static boolean DataReservaValida(String id)
    {
        return ReservaDAO.DataReservaValida(id);
    }
       
    public static boolean ReservaExiste(String id){
        
        return ReservaDAO.ReservaExiste(id);
    }

    public static void insertReservaCriar(String nomeCategoria,String dataRetirada,String dataDevolucao, String orcamento,String CPFCliente,String CPFFuncionario) {
        
       //int idNovo = Integer.parseInt(id);
          SimpleDateFormat format = new SimpleDateFormat("dd-MM-yyyy");  
       
        Date dataRetiradaNova = null;
        try {
            dataRetiradaNova = new Date(format.parse(dataRetirada).getTime());
        } catch (ParseException ex) {
            Logger.getLogger(Funcionario.class.getName()).log(Level.SEVERE, null, ex);
        }
        Date dataDevolucaoNova = null;
        try {
            dataDevolucaoNova = new Date(format.parse(dataDevolucao).getTime());
        } catch (ParseException ex) {
            Logger.getLogger(Funcionario.class.getName()).log(Level.SEVERE, null, ex);
        }
 
    
        float orcamentoNovo = Float.parseFloat(orcamento);

        ReservaVO reserva = new ReservaVO(nomeCategoria,dataRetiradaNova,dataDevolucaoNova,orcamentoNovo,CPFCliente,CPFFuncionario);
        ReservaDAO.insertReserva(reserva);
    }

    public static int GeraDias(String Data)
    {
 
        char dia1=Data.charAt(0);
        char dia2=Data.charAt(1);
        
        String Dia=""+dia1+dia2;
        
        return Integer.parseInt(Dia);
    }
    public static int GeraDiasI(String Data)
    {
        
        char dia1=Data.charAt(8);
        char dia2=Data.charAt(9);
        
        String Dia=""+dia1+dia2;
        
        return Integer.parseInt(Dia);
    }   
    public static int GeraMes(String Data)
    {
        char mes1=Data.charAt(3);
        char mes2=Data.charAt(4);
        
        String mes=""+mes1+mes2;
        
        return Integer.parseInt(mes);
    }
        public static int GeraMesI(String Data)
    {
        char mes1=Data.charAt(5);
        char mes2=Data.charAt(6);
        
        String mes=""+mes1+mes2;
        
        return Integer.parseInt(mes);
    }
    
    public static int GeraAno(String Data)
    {
        char ano1=Data.charAt(6);
        char ano2=Data.charAt(7);
        char ano3=Data.charAt(8);
        char ano4=Data.charAt(9);
        
        String Ano=""+ano1+ano2+ano3+ano4;
        
        return Integer.parseInt(Ano);
    }
        public static int GeraAnoI(String Data)
    {
        char ano1=Data.charAt(0);
        char ano2=Data.charAt(1);
        char ano3=Data.charAt(2);
        char ano4=Data.charAt(3);
        
        String Ano=""+ano1+ano2+ano3+ano4;
        
        return Integer.parseInt(Ano);
    }
    public static float GerarOrcamentoEfetivar(String dataRetirada,String dataDevolucao,String cat,float extra)
    {
        float orc=0;
        int contagem_dias_dias=0,contagem_dias_mes=0,contagem_dias_ano=0,count=0;
        /*
        String cpf=Reserva_Criar.getInstance().getjTextFieldReservaCriarCPF();
//        String placa=Reserva_Criar.getInstance().getPlacaTabela();
        String Horario_Retirada=Reserva_Criar.getInstance().getjTextFieldReservaCriarHorarioRetirada();
        String Horario_Devolucao=Reserva_Criar.getInstance().getjTextFieldReservaCriarHorarioDevolucao();       
        String Data_Devolucao=Reserva_Criar.getInstance().getjTextFieldReservaCriarDataDevolucao();         
        String Data_Retirada=Reserva_Criar.getInstance().getjTextFieldReservaCriarDataRetirada(); 
        String Categoria=Reserva_Criar.getInstance().getCategoriaTabela();
       */
        float tarifa=CategoriaDAO.getTarifaPelaCategoria(cat);
     
 

        int Dia_Retirada,Dia_Devolucao,Mes_Retirada,Mes_Devolucao,Ano_Retirada,Ano_Devolucao;
        
        Dia_Retirada=GeraDiasI(dataRetirada);
        Dia_Devolucao=GeraDiasI(dataDevolucao);
        Mes_Retirada=GeraMesI(dataRetirada);
        Mes_Devolucao=GeraMesI(dataDevolucao);
        Ano_Retirada=GeraAnoI(dataRetirada);
        Ano_Devolucao=GeraAnoI(dataDevolucao);
        
        
        contagem_dias_dias=Dia_Devolucao-Dia_Retirada;
        
        contagem_dias_mes=(Mes_Devolucao-Mes_Retirada)*30;
        
        contagem_dias_ano=(Ano_Devolucao-Ano_Retirada)*365;
        
        
        count=contagem_dias_dias+contagem_dias_mes+contagem_dias_ano;
        
        
        orc=tarifa*count+extra*count;
        
        
        
        
        return orc;
    }    
    
    public static float GerarOrcamento(String dataRetirada,String dataDevolucao,String cat)
    {
        float orc=0;
        int contagem_dias_dias=0,contagem_dias_mes=0,contagem_dias_ano=0,count=0;
        /*
        String cpf=Reserva_Criar.getInstance().getjTextFieldReservaCriarCPF();
//        String placa=Reserva_Criar.getInstance().getPlacaTabela();
        String Horario_Retirada=Reserva_Criar.getInstance().getjTextFieldReservaCriarHorarioRetirada();
        String Horario_Devolucao=Reserva_Criar.getInstance().getjTextFieldReservaCriarHorarioDevolucao();       
        String Data_Devolucao=Reserva_Criar.getInstance().getjTextFieldReservaCriarDataDevolucao();         
        String Data_Retirada=Reserva_Criar.getInstance().getjTextFieldReservaCriarDataRetirada(); 
        String Categoria=Reserva_Criar.getInstance().getCategoriaTabela();
       */
        float tarifa=CategoriaDAO.getTarifaPelaCategoria(cat);
        
        int Dia_Retirada,Dia_Devolucao,Mes_Retirada,Mes_Devolucao,Ano_Retirada,Ano_Devolucao;
        
        Dia_Retirada=GeraDias(dataRetirada);
        Dia_Devolucao=GeraDias(dataDevolucao);
        Mes_Retirada=GeraMes(dataRetirada);
        Mes_Devolucao=GeraMes(dataDevolucao);
        Ano_Retirada=GeraAno(dataRetirada);
        Ano_Devolucao=GeraAno(dataDevolucao);
        
        
        contagem_dias_dias=Dia_Devolucao-Dia_Retirada;
        
        contagem_dias_mes=(Mes_Devolucao-Mes_Retirada)*30;
        
        contagem_dias_ano=(Ano_Devolucao-Ano_Retirada)*365;
        
        
        count=contagem_dias_dias+contagem_dias_mes+contagem_dias_ano;
        
        
        orc=tarifa*count;
        
        
        
        
        return orc;
    }
    
 


    
}
